#include "cgic.h"
#include "global.h"
#include "MsgUtils.h"
#include <glib.h>

int cgiMain()
{
    //1.声明接收数据的数组
    char *ip[128];
    char *local[128];

    //2.获取用户输入的数据
    cgiFormString("ip", ip, 128);
    cgiFormString("local", local, 128);

    //3.1方案一：保存数据 --> 直接写入运行期的路径  --> 不方便维护:如有改动必须修改源代码
    // GKeyFile *config =  g_key_file_new();
    // g_key_file_set_string(config,"config","ip",ip);
    // g_key_file_set_string(config,"config","local",local);
    // g_key_file_save_to_file(config, "./conf.ini", NULL);
    // g_key_file_free(config);

    //3.2方案二:保存数据 --> 把路径提出做成配置文件  --> 方便维护：如有改动直接改配置文件即可
    GKeyFile *config_file = g_key_file_new();
    if (!g_key_file_load_from_file(config_file,"./config.ini",G_KEY_FILE_NONE,NULL))
    {
        g_warning("config.ini error!");
        return -1;
    }
    //获取配置文件内容
    gchar *path = g_key_file_get_string(config_file, "config", "path", NULL);
    //释放
    g_key_file_free(config_file);

    //保存
    GKeyFile *config =  g_key_file_new();
    g_key_file_set_string(config,"config","ip",ip);
    g_key_file_set_string(config,"config","local",local);
    g_key_file_save_to_file(config, path, NULL);
    g_key_file_free(config);

    //通知心跳进程，读取数据发送请求
    int mqId = getMsgQueue(PATHNAME_BOA_MAIN, PROCESS_ID_BOA_MAIN);
    if (mqId == -1)
    {
        perror("create mq error!");
        return -1;
    }

    Message msg = {
        .text = 1,
        .type = "data"
    };

    int sent_size = sendMsg(mqId, &msg, strlen(msg.text) + 1);
    
    //响应客户端界面
    cgiHeaderContentType("text/html");
    fprintf(cgiOut, "<HTML><HEAD><meta charset='UTF-8'>\n");
    fprintf(cgiOut, "<TITLE>响应客户端版本</TITLE></HEAD>\n");
    //把请求体返回页面
    fprintf(cgiOut, "<BODY><H1>%s</H1></BODY>\n","success!");
    fprintf(cgiOut, "</HTML>\n");

    return 0;
}